10 #ifndef __XAUDIO2_INCLUDED__ 11 #define __XAUDIO2_INCLUDED__ 51 DEFINE_CLSID(XAudio2, 5a508685, a254, 4fba, 9b, 82, 9a, 24, b0, 03, 06, af);
52 DEFINE_CLSID(XAudio2_Debug, db05ea35, 0329, 4d4b, a5, 3a, 6d, ea, d0, 3d, 38, 52);
53 DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb);
57 #ifndef GUID_DEFS_ONLY 66 #include <audiodefs.h> 80 #define XAUDIO2_MAX_BUFFER_BYTES 0x80000000 // Maximum bytes allowed in a source buffer 81 #define XAUDIO2_MAX_QUEUED_BUFFERS 64 // Maximum buffers allowed in a voice queue 82 #define XAUDIO2_MAX_BUFFERS_SYSTEM 2 // Maximum buffers allowed for system threads (Xbox 360 only) 83 #define XAUDIO2_MAX_AUDIO_CHANNELS 64 // Maximum channels in an audio stream 84 #define XAUDIO2_MIN_SAMPLE_RATE 1000 // Minimum audio sample rate supported 85 #define XAUDIO2_MAX_SAMPLE_RATE 200000 // Maximum audio sample rate supported 86 #define XAUDIO2_MAX_VOLUME_LEVEL 16777216.0f // Maximum acceptable volume level (2^24) 87 #define XAUDIO2_MIN_FREQ_RATIO (1/1024.0f) // Minimum SetFrequencyRatio argument 88 #define XAUDIO2_MAX_FREQ_RATIO 1024.0f // Maximum MaxFrequencyRatio argument 89 #define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f // Default MaxFrequencyRatio argument 90 #define XAUDIO2_MAX_FILTER_ONEOVERQ 1.5f // Maximum XAUDIO2_FILTER_PARAMETERS.OneOverQ 91 #define XAUDIO2_MAX_FILTER_FREQUENCY 1.0f // Maximum XAUDIO2_FILTER_PARAMETERS.Frequency 92 #define XAUDIO2_MAX_LOOP_COUNT 254 // Maximum non-infinite XAUDIO2_BUFFER.LoopCount 93 #define XAUDIO2_MAX_INSTANCES 8 // Maximum simultaneous XAudio2 objects on Xbox 360 98 #define XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO 600000 99 #define XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL 300000 102 #define XAUDIO2_COMMIT_NOW 0 // Used as an OperationSet argument 103 #define XAUDIO2_COMMIT_ALL 0 // Used in IXAudio2::CommitChanges 104 #define XAUDIO2_INVALID_OPSET (UINT32)(-1) // Not allowed for OperationSet arguments 105 #define XAUDIO2_NO_LOOP_REGION 0 // Used in XAUDIO2_BUFFER.LoopCount 106 #define XAUDIO2_LOOP_INFINITE 255 // Used in XAUDIO2_BUFFER.LoopCount 107 #define XAUDIO2_DEFAULT_CHANNELS 0 // Used in CreateMasteringVoice 108 #define XAUDIO2_DEFAULT_SAMPLERATE 0 // Used in CreateMasteringVoice 111 #define XAUDIO2_DEBUG_ENGINE 0x0001 // Used in XAudio2Create on Windows only 112 #define XAUDIO2_VOICE_NOPITCH 0x0002 // Used in IXAudio2::CreateSourceVoice 113 #define XAUDIO2_VOICE_NOSRC 0x0004 // Used in IXAudio2::CreateSourceVoice 114 #define XAUDIO2_VOICE_USEFILTER 0x0008 // Used in IXAudio2::CreateSource/SubmixVoice 115 #define XAUDIO2_VOICE_MUSIC 0x0010 // Used in IXAudio2::CreateSourceVoice 116 #define XAUDIO2_PLAY_TAILS 0x0020 // Used in IXAudio2SourceVoice::Stop 117 #define XAUDIO2_END_OF_STREAM 0x0040 // Used in XAUDIO2_BUFFER.Flags 118 #define XAUDIO2_SEND_USEFILTER 0x0080 // Used in XAUDIO2_SEND_DESCRIPTOR.Flags 121 #define XAUDIO2_DEFAULT_FILTER_TYPE LowPassFilter 122 #define XAUDIO2_DEFAULT_FILTER_FREQUENCY XAUDIO2_MAX_FILTER_FREQUENCY 123 #define XAUDIO2_DEFAULT_FILTER_ONEOVERQ 1.0f 127 #define XAUDIO2_QUANTUM_NUMERATOR 2 // On Xbox 360, XAudio2 processes audio 128 #define XAUDIO2_QUANTUM_DENOMINATOR 375 // in 5.333ms chunks (= 2/375 seconds) 130 #define XAUDIO2_QUANTUM_NUMERATOR 1 // On Windows, XAudio2 processes audio 131 #define XAUDIO2_QUANTUM_DENOMINATOR 100 // in 10ms chunks (= 1/100 seconds) 133 #define XAUDIO2_QUANTUM_MS (1000.0f * XAUDIO2_QUANTUM_NUMERATOR / XAUDIO2_QUANTUM_DENOMINATOR) 136 #define FACILITY_XAUDIO2 0x896 137 #define XAUDIO2_E_INVALID_CALL 0x88960001 // An API call or one of its arguments was illegal 138 #define XAUDIO2_E_XMA_DECODER_ERROR 0x88960002 // The XMA hardware suffered an unrecoverable error 139 #define XAUDIO2_E_XAPO_CREATION_FAILED 0x88960003 // XAudio2 failed to initialize an XAPO effect 140 #define XAUDIO2_E_DEVICE_INVALIDATED 0x88960004 // An audio device became unusable (unplugged, etc) 150 #define FWD_DECLARE(x) interface x 152 #define FWD_DECLARE(x) typedef interface x x 155 FWD_DECLARE(IXAudio2);
156 FWD_DECLARE(IXAudio2Voice);
157 FWD_DECLARE(IXAudio2SourceVoice);
158 FWD_DECLARE(IXAudio2SubmixVoice);
159 FWD_DECLARE(IXAudio2MasteringVoice);
160 FWD_DECLARE(IXAudio2EngineCallback);
161 FWD_DECLARE(IXAudio2VoiceCallback);
172 typedef enum XAUDIO2_XBOX_HWTHREAD_SPECIFIER
180 XAUDIO2_ANY_PROCESSOR = XboxThread4,
181 XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR
182 } XAUDIO2_XBOX_HWTHREAD_SPECIFIER, XAUDIO2_PROCESSOR;
184 typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER
186 Processor1 = 0x00000001,
187 Processor2 = 0x00000002,
188 Processor3 = 0x00000004,
189 Processor4 = 0x00000008,
190 Processor5 = 0x00000010,
191 Processor6 = 0x00000020,
192 Processor7 = 0x00000040,
193 Processor8 = 0x00000080,
194 Processor9 = 0x00000100,
195 Processor10 = 0x00000200,
196 Processor11 = 0x00000400,
197 Processor12 = 0x00000800,
198 Processor13 = 0x00001000,
199 Processor14 = 0x00002000,
200 Processor15 = 0x00004000,
201 Processor16 = 0x00008000,
202 Processor17 = 0x00010000,
203 Processor18 = 0x00020000,
204 Processor19 = 0x00040000,
205 Processor20 = 0x00080000,
206 Processor21 = 0x00100000,
207 Processor22 = 0x00200000,
208 Processor23 = 0x00400000,
209 Processor24 = 0x00800000,
210 Processor25 = 0x01000000,
211 Processor26 = 0x02000000,
212 Processor27 = 0x04000000,
213 Processor28 = 0x08000000,
214 Processor29 = 0x10000000,
215 Processor30 = 0x20000000,
216 Processor31 = 0x40000000,
217 Processor32 = 0x80000000,
218 XAUDIO2_ANY_PROCESSOR = 0xffffffff,
219 XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR
220 } XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER, XAUDIO2_PROCESSOR;
226 typedef enum XAUDIO2_DEVICE_ROLE
228 NotDefaultDevice = 0x0,
229 DefaultConsoleDevice = 0x1,
230 DefaultMultimediaDevice = 0x2,
231 DefaultCommunicationsDevice = 0x4,
232 DefaultGameDevice = 0x8,
233 GlobalDefaultDevice = 0xf,
234 InvalidDeviceRole = ~GlobalDefaultDevice
235 } XAUDIO2_DEVICE_ROLE;
241 WCHAR DisplayName[256];
242 XAUDIO2_DEVICE_ROLE Role;
249 UINT32 CreationFlags;
250 UINT32 InputChannels;
251 UINT32 InputSampleRate;
258 IXAudio2Voice* pOutputVoice;
273 UINT32 OutputChannels;
284 typedef enum XAUDIO2_FILTER_TYPE
290 } XAUDIO2_FILTER_TYPE;
295 XAUDIO2_FILTER_TYPE Type;
308 const BYTE* pAudioData;
329 const UINT32* pDecodedPacketCumulativeBytes;
340 void* pCurrentBufferContext;
343 UINT32 BuffersQueued;
345 UINT64 SamplesPlayed;
353 UINT64 AudioCyclesSinceLastQuery;
355 UINT64 TotalCyclesSinceLastQuery;
357 UINT32 MinimumCyclesPerQuantum;
359 UINT32 MaximumCyclesPerQuantum;
363 UINT32 MemoryUsageInBytes;
366 UINT32 CurrentLatencyInSamples;
368 UINT32 GlitchesSinceEngineStarted;
371 UINT32 ActiveSourceVoiceCount;
372 UINT32 TotalSourceVoiceCount;
373 UINT32 ActiveSubmixVoiceCount;
375 UINT32 ActiveResamplerCount;
376 UINT32 ActiveMatrixMixCount;
379 UINT32 ActiveXmaSourceVoices;
380 UINT32 ActiveXmaStreams;
390 BOOL LogFunctionName;
398 #define XAUDIO2_LOG_ERRORS 0x0001 // For handled errors with serious effects. 399 #define XAUDIO2_LOG_WARNINGS 0x0002 // For handled errors that may be recoverable. 400 #define XAUDIO2_LOG_INFO 0x0004 // Informational chit-chat (e.g. state changes). 401 #define XAUDIO2_LOG_DETAIL 0x0008 // More detailed chit-chat. 402 #define XAUDIO2_LOG_API_CALLS 0x0010 // Public API function entries and exits. 403 #define XAUDIO2_LOG_FUNC_CALLS 0x0020 // Internal function entries and exits. 404 #define XAUDIO2_LOG_TIMING 0x0040 // Delays detected and other timing data. 405 #define XAUDIO2_LOG_LOCKS 0x0080 // Usage of critical sections and mutexes. 406 #define XAUDIO2_LOG_MEMORY 0x0100 // Memory heap usage information. 407 #define XAUDIO2_LOG_STREAMING 0x1000 // Audio streaming information. 418 #define X2DEFAULT(x) =x 424 #define INTERFACE IXAudio2 425 DECLARE_INTERFACE_(IXAudio2, IUnknown)
435 STDMETHOD(QueryInterface) (THIS_ REFIID riid, __deref_out
void** ppvInterface) PURE;
440 STDMETHOD_(ULONG, AddRef) (THIS) PURE;
445 STDMETHOD_(ULONG, Release) (THIS) PURE;
453 STDMETHOD(GetDeviceCount) (THIS_ __out UINT32* pCount) PURE;
474 STDMETHOD(Initialize) (THIS_ UINT32 Flags X2DEFAULT(0),
475 XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR)) PURE;
483 STDMETHOD(RegisterForCallbacks) (__in IXAudio2EngineCallback* pCallback) PURE;
491 STDMETHOD_(
void, UnregisterForCallbacks) (__in IXAudio2EngineCallback* pCallback) PURE;
505 STDMETHOD(CreateSourceVoice) (THIS_ __deref_out IXAudio2SourceVoice** ppSourceVoice,
507 UINT32 Flags X2DEFAULT(0),
508 float MaxFrequencyRatio X2DEFAULT(XAUDIO2_DEFAULT_FREQ_RATIO),
509 __in_opt IXAudio2VoiceCallback* pCallback X2DEFAULT(NULL),
525 STDMETHOD(CreateSubmixVoice) (THIS_ __deref_out IXAudio2SubmixVoice** ppSubmixVoice,
526 UINT32 InputChannels, UINT32 InputSampleRate,
527 UINT32 Flags X2DEFAULT(0), UINT32 ProcessingStage X2DEFAULT(0),
543 STDMETHOD(CreateMasteringVoice) (THIS_ __deref_out IXAudio2MasteringVoice** ppMasteringVoice,
544 UINT32 InputChannels X2DEFAULT(XAUDIO2_DEFAULT_CHANNELS),
545 UINT32 InputSampleRate X2DEFAULT(XAUDIO2_DEFAULT_SAMPLERATE),
546 UINT32 Flags X2DEFAULT(0), UINT32 DeviceIndex X2DEFAULT(0),
552 STDMETHOD(StartEngine) (THIS) PURE;
557 STDMETHOD_(
void, StopEngine) (THIS) PURE;
566 STDMETHOD(CommitChanges) (THIS_ UINT32 OperationSet) PURE;
584 __in_opt __reserved
void* pReserved X2DEFAULT(NULL)) PURE;
595 #define INTERFACE IXAudio2Voice 596 DECLARE_INTERFACE(IXAudio2Voice)
601 #define Declare_IXAudio2Voice_Methods() \ 609 STDMETHOD_(void, GetVoiceDetails) (THIS_ __out XAUDIO2_VOICE_DETAILS* pVoiceDetails) PURE; \ 618 STDMETHOD(SetOutputVoices) (THIS_ __in_opt const XAUDIO2_VOICE_SENDS* pSendList) PURE; \ 626 STDMETHOD(SetEffectChain) (THIS_ __in_opt const XAUDIO2_EFFECT_CHAIN* pEffectChain) PURE; \ 635 STDMETHOD(EnableEffect) (THIS_ UINT32 EffectIndex, \ 636 UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ 645 STDMETHOD(DisableEffect) (THIS_ UINT32 EffectIndex, \ 646 UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ 655 STDMETHOD_(void, GetEffectState) (THIS_ UINT32 EffectIndex, __out BOOL* pEnabled) PURE; \ 671 STDMETHOD(SetEffectParameters) (THIS_ UINT32 EffectIndex, \ 672 __in_bcount(ParametersByteSize) const void* pParameters, \ 673 UINT32 ParametersByteSize, \ 674 UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ 684 STDMETHOD(GetEffectParameters) (THIS_ UINT32 EffectIndex, \ 685 __out_bcount(ParametersByteSize) void* pParameters, \ 686 UINT32 ParametersByteSize) PURE; \ 695 STDMETHOD(SetFilterParameters) (THIS_ __in const XAUDIO2_FILTER_PARAMETERS* pParameters, \ 696 UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ 704 STDMETHOD_(void, GetFilterParameters) (THIS_ __out XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \ 714 STDMETHOD(SetOutputFilterParameters) (THIS_ __in_opt IXAudio2Voice* pDestinationVoice, \ 715 __in const XAUDIO2_FILTER_PARAMETERS* pParameters, \ 716 UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ 725 STDMETHOD_(void, GetOutputFilterParameters) (THIS_ __in_opt IXAudio2Voice* pDestinationVoice, \ 726 __out XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \ 735 STDMETHOD(SetVolume) (THIS_ float Volume, \ 736 UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ 744 STDMETHOD_(void, GetVolume) (THIS_ __out float* pVolume) PURE; \ 754 STDMETHOD(SetChannelVolumes) (THIS_ UINT32 Channels, __in_ecount(Channels) const float* pVolumes, \ 755 UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ 764 STDMETHOD_(void, GetChannelVolumes) (THIS_ UINT32 Channels, __out_ecount(Channels) float* pVolumes) PURE; \ 781 STDMETHOD(SetOutputMatrix) (THIS_ __in_opt IXAudio2Voice* pDestinationVoice, \ 782 UINT32 SourceChannels, UINT32 DestinationChannels, \ 783 __in_ecount(SourceChannels * DestinationChannels) const float* pLevelMatrix, \ 784 UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ 798 STDMETHOD_(void, GetOutputMatrix) (THIS_ __in_opt IXAudio2Voice* pDestinationVoice, \ 799 UINT32 SourceChannels, UINT32 DestinationChannels, \ 800 __out_ecount(SourceChannels * DestinationChannels) float* pLevelMatrix) PURE; \ 806 STDMETHOD_(void, DestroyVoice) (THIS) PURE 808 Declare_IXAudio2Voice_Methods();
819 #define INTERFACE IXAudio2SourceVoice 820 DECLARE_INTERFACE_(IXAudio2SourceVoice, IXAudio2Voice)
823 Declare_IXAudio2Voice_Methods();
832 STDMETHOD(Start) (THIS_ UINT32 Flags X2DEFAULT(0), UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
841 STDMETHOD(Stop) (THIS_ UINT32 Flags X2DEFAULT(0), UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
855 STDMETHOD(FlushSourceBuffers) (THIS) PURE;
862 STDMETHOD(Discontinuity) (THIS) PURE;
870 STDMETHOD(ExitLoop) (THIS_ UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
889 STDMETHOD(SetFrequencyRatio) (THIS_
float Ratio,
890 UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
898 STDMETHOD_(
void, GetFrequencyRatio) (THIS_ __out
float* pRatio) PURE;
908 STDMETHOD(SetSourceSampleRate) (THIS_ UINT32 NewSourceSampleRate) PURE;
919 #define INTERFACE IXAudio2SubmixVoice 920 DECLARE_INTERFACE_(IXAudio2SubmixVoice, IXAudio2Voice)
923 Declare_IXAudio2Voice_Methods();
936 #define INTERFACE IXAudio2MasteringVoice 937 DECLARE_INTERFACE_(IXAudio2MasteringVoice, IXAudio2Voice)
940 Declare_IXAudio2Voice_Methods();
959 #define INTERFACE IXAudio2EngineCallback 960 DECLARE_INTERFACE(IXAudio2EngineCallback)
963 STDMETHOD_(
void, OnProcessingPassStart) (THIS) PURE;
966 STDMETHOD_(
void, OnProcessingPassEnd) (THIS) PURE;
970 STDMETHOD_(
void, OnCriticalError) (THIS_ HRESULT Error) PURE;
986 #define INTERFACE IXAudio2VoiceCallback 987 DECLARE_INTERFACE(IXAudio2VoiceCallback)
990 STDMETHOD_(
void, OnVoiceProcessingPassStart) (THIS_ UINT32 BytesRequired) PURE;
993 STDMETHOD_(
void, OnVoiceProcessingPassEnd) (THIS) PURE;
997 STDMETHOD_(
void, OnStreamEnd) (THIS) PURE;
1000 STDMETHOD_(
void, OnBufferStart) (THIS_
void* pBufferContext) PURE;
1004 STDMETHOD_(
void, OnBufferEnd) (THIS_
void* pBufferContext) PURE;
1007 STDMETHOD_(
void, OnLoopEnd) (THIS_
void* pBufferContext) PURE;
1014 STDMETHOD_(
void, OnVoiceError) (THIS_
void* pBufferContext, HRESULT Error) PURE;
1027 #define IXAudio2_QueryInterface(This,riid,ppvInterface) ((This)->lpVtbl->QueryInterface(This,riid,ppvInterface)) 1028 #define IXAudio2_AddRef(This) ((This)->lpVtbl->AddRef(This)) 1029 #define IXAudio2_Release(This) ((This)->lpVtbl->Release(This)) 1030 #define IXAudio2_GetDeviceCount(This,puCount) ((This)->lpVtbl->GetDeviceCount(This,puCount)) 1031 #define IXAudio2_GetDeviceDetails(This,Index,pDeviceDetails) ((This)->lpVtbl->GetDeviceDetails(This,Index,pDeviceDetails)) 1032 #define IXAudio2_Initialize(This,Flags,XAudio2Processor) ((This)->lpVtbl->Initialize(This,Flags,XAudio2Processor)) 1033 #define IXAudio2_CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) ((This)->lpVtbl->CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain)) 1034 #define IXAudio2_CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain) ((This)->lpVtbl->CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain)) 1035 #define IXAudio2_CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain) ((This)->lpVtbl->CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain)) 1036 #define IXAudio2_StartEngine(This) ((This)->lpVtbl->StartEngine(This)) 1037 #define IXAudio2_StopEngine(This) ((This)->lpVtbl->StopEngine(This)) 1038 #define IXAudio2_CommitChanges(This,OperationSet) ((This)->lpVtbl->CommitChanges(This,OperationSet)) 1039 #define IXAudio2_GetPerformanceData(This,pPerfData) ((This)->lpVtbl->GetPerformanceData(This,pPerfData)) 1040 #define IXAudio2_SetDebugConfiguration(This,pDebugConfiguration,pReserved) ((This)->lpVtbl->SetDebugConfiguration(This,pDebugConfiguration,pReserved)) 1043 #define IXAudio2Voice_GetVoiceDetails(This,pVoiceDetails) ((This)->lpVtbl->GetVoiceDetails(This,pVoiceDetails)) 1044 #define IXAudio2Voice_SetOutputVoices(This,pSendList) ((This)->lpVtbl->SetOutputVoices(This,pSendList)) 1045 #define IXAudio2Voice_SetEffectChain(This,pEffectChain) ((This)->lpVtbl->SetEffectChain(This,pEffectChain)) 1046 #define IXAudio2Voice_EnableEffect(This,EffectIndex,OperationSet) ((This)->lpVtbl->EnableEffect(This,EffectIndex,OperationSet)) 1047 #define IXAudio2Voice_DisableEffect(This,EffectIndex,OperationSet) ((This)->lpVtbl->DisableEffect(This,EffectIndex,OperationSet)) 1048 #define IXAudio2Voice_GetEffectState(This,EffectIndex,pEnabled) ((This)->lpVtbl->GetEffectState(This,EffectIndex,pEnabled)) 1049 #define IXAudio2Voice_SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize, OperationSet) ((This)->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet)) 1050 #define IXAudio2Voice_GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) ((This)->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize)) 1051 #define IXAudio2Voice_SetFilterParameters(This,pParameters,OperationSet) ((This)->lpVtbl->SetFilterParameters(This,pParameters,OperationSet)) 1052 #define IXAudio2Voice_GetFilterParameters(This,pParameters) ((This)->lpVtbl->GetFilterParameters(This,pParameters)) 1053 #define IXAudio2Voice_SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) ((This)->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet)) 1054 #define IXAudio2Voice_GetOutputFilterParameters(This,pDestinationVoice,pParameters) ((This)->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters)) 1055 #define IXAudio2Voice_SetVolume(This,Volume,OperationSet) ((This)->lpVtbl->SetVolume(This,Volume,OperationSet)) 1056 #define IXAudio2Voice_GetVolume(This,pVolume) ((This)->lpVtbl->GetVolume(This,pVolume)) 1057 #define IXAudio2Voice_SetChannelVolumes(This,Channels,pVolumes,OperationSet) ((This)->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet)) 1058 #define IXAudio2Voice_GetChannelVolumes(This,Channels,pVolumes) ((This)->lpVtbl->GetChannelVolumes(This,Channels,pVolumes)) 1059 #define IXAudio2Voice_SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) ((This)->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet)) 1060 #define IXAudio2Voice_GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) ((This)->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix)) 1061 #define IXAudio2Voice_DestroyVoice(This) ((This)->lpVtbl->DestroyVoice(This)) 1064 #define IXAudio2SourceVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails 1065 #define IXAudio2SourceVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices 1066 #define IXAudio2SourceVoice_SetEffectChain IXAudio2Voice_SetEffectChain 1067 #define IXAudio2SourceVoice_EnableEffect IXAudio2Voice_EnableEffect 1068 #define IXAudio2SourceVoice_DisableEffect IXAudio2Voice_DisableEffect 1069 #define IXAudio2SourceVoice_GetEffectState IXAudio2Voice_GetEffectState 1070 #define IXAudio2SourceVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters 1071 #define IXAudio2SourceVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters 1072 #define IXAudio2SourceVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters 1073 #define IXAudio2SourceVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters 1074 #define IXAudio2SourceVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters 1075 #define IXAudio2SourceVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters 1076 #define IXAudio2SourceVoice_SetVolume IXAudio2Voice_SetVolume 1077 #define IXAudio2SourceVoice_GetVolume IXAudio2Voice_GetVolume 1078 #define IXAudio2SourceVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes 1079 #define IXAudio2SourceVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes 1080 #define IXAudio2SourceVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix 1081 #define IXAudio2SourceVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix 1082 #define IXAudio2SourceVoice_DestroyVoice IXAudio2Voice_DestroyVoice 1083 #define IXAudio2SourceVoice_Start(This,Flags,OperationSet) ((This)->lpVtbl->Start(This,Flags,OperationSet)) 1084 #define IXAudio2SourceVoice_Stop(This,Flags,OperationSet) ((This)->lpVtbl->Stop(This,Flags,OperationSet)) 1085 #define IXAudio2SourceVoice_SubmitSourceBuffer(This,pBuffer,pBufferWMA) ((This)->lpVtbl->SubmitSourceBuffer(This,pBuffer,pBufferWMA)) 1086 #define IXAudio2SourceVoice_FlushSourceBuffers(This) ((This)->lpVtbl->FlushSourceBuffers(This)) 1087 #define IXAudio2SourceVoice_Discontinuity(This) ((This)->lpVtbl->Discontinuity(This)) 1088 #define IXAudio2SourceVoice_ExitLoop(This,OperationSet) ((This)->lpVtbl->ExitLoop(This,OperationSet)) 1089 #define IXAudio2SourceVoice_GetState(This,pVoiceState) ((This)->lpVtbl->GetState(This,pVoiceState)) 1090 #define IXAudio2SourceVoice_SetFrequencyRatio(This,Ratio,OperationSet) ((This)->lpVtbl->SetFrequencyRatio(This,Ratio,OperationSet)) 1091 #define IXAudio2SourceVoice_GetFrequencyRatio(This,pRatio) ((This)->lpVtbl->GetFrequencyRatio(This,pRatio)) 1092 #define IXAudio2SourceVoice_SetSourceSampleRate(This,NewSourceSampleRate) ((This)->lpVtbl->SetSourceSampleRate(This,NewSourceSampleRate)) 1095 #define IXAudio2SubmixVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails 1096 #define IXAudio2SubmixVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices 1097 #define IXAudio2SubmixVoice_SetEffectChain IXAudio2Voice_SetEffectChain 1098 #define IXAudio2SubmixVoice_EnableEffect IXAudio2Voice_EnableEffect 1099 #define IXAudio2SubmixVoice_DisableEffect IXAudio2Voice_DisableEffect 1100 #define IXAudio2SubmixVoice_GetEffectState IXAudio2Voice_GetEffectState 1101 #define IXAudio2SubmixVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters 1102 #define IXAudio2SubmixVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters 1103 #define IXAudio2SubmixVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters 1104 #define IXAudio2SubmixVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters 1105 #define IXAudio2SubmixVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters 1106 #define IXAudio2SubmixVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters 1107 #define IXAudio2SubmixVoice_SetVolume IXAudio2Voice_SetVolume 1108 #define IXAudio2SubmixVoice_GetVolume IXAudio2Voice_GetVolume 1109 #define IXAudio2SubmixVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes 1110 #define IXAudio2SubmixVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes 1111 #define IXAudio2SubmixVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix 1112 #define IXAudio2SubmixVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix 1113 #define IXAudio2SubmixVoice_DestroyVoice IXAudio2Voice_DestroyVoice 1116 #define IXAudio2MasteringVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails 1117 #define IXAudio2MasteringVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices 1118 #define IXAudio2MasteringVoice_SetEffectChain IXAudio2Voice_SetEffectChain 1119 #define IXAudio2MasteringVoice_EnableEffect IXAudio2Voice_EnableEffect 1120 #define IXAudio2MasteringVoice_DisableEffect IXAudio2Voice_DisableEffect 1121 #define IXAudio2MasteringVoice_GetEffectState IXAudio2Voice_GetEffectState 1122 #define IXAudio2MasteringVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters 1123 #define IXAudio2MasteringVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters 1124 #define IXAudio2MasteringVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters 1125 #define IXAudio2MasteringVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters 1126 #define IXAudio2MasteringVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters 1127 #define IXAudio2MasteringVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters 1128 #define IXAudio2MasteringVoice_SetVolume IXAudio2Voice_SetVolume 1129 #define IXAudio2MasteringVoice_GetVolume IXAudio2Voice_GetVolume 1130 #define IXAudio2MasteringVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes 1131 #define IXAudio2MasteringVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes 1132 #define IXAudio2MasteringVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix 1133 #define IXAudio2MasteringVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix 1134 #define IXAudio2MasteringVoice_DestroyVoice IXAudio2Voice_DestroyVoice 1136 #endif // #ifndef __cplusplus 1148 #ifdef XAUDIO2_HELPER_FUNCTIONS 1150 #define _USE_MATH_DEFINES // Make math.h define M_PI 1154 __inline
float XAudio2DecibelsToAmplitudeRatio(
float Decibels)
1156 return powf(10.0f, Decibels / 20.0f);
1160 __inline
float XAudio2AmplitudeRatioToDecibels(
float Volume)
1164 return -3.402823466e+38f;
1166 return 20.0f * log10f(Volume);
1170 __inline
float XAudio2SemitonesToFrequencyRatio(
float Semitones)
1174 return powf(2.0f, Semitones / 12.0f);
1178 __inline
float XAudio2FrequencyRatioToSemitones(
float FrequencyRatio)
1182 return 39.86313713864835f * log10f(FrequencyRatio);
1189 __inline
float XAudio2CutoffFrequencyToRadians(
float CutoffFrequency, UINT32 SampleRate)
1191 if ((UINT32)(CutoffFrequency * 6.0f) >= SampleRate)
1193 return XAUDIO2_MAX_FILTER_FREQUENCY;
1195 return 2.0f * sinf((
float)M_PI * CutoffFrequency / SampleRate);
1199 __inline
float XAudio2RadiansToCutoffFrequency(
float Radians,
float SampleRate)
1201 return SampleRate * asinf(Radians / 2.0f) / (float)M_PI;
1203 #endif // #ifdef XAUDIO2_HELPER_FUNCTIONS 1223 STDAPI XAudio2Create(__deref_out IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0),
1224 XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR));
1228 __inline HRESULT XAudio2Create(__deref_out IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0),
1229 XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR))
1236 HRESULT hr = CoCreateInstance((Flags & XAUDIO2_DEBUG_ENGINE) ? __uuidof(XAudio2_Debug) : __uuidof(XAudio2),
1237 NULL, CLSCTX_INPROC_SERVER, __uuidof(IXAudio2), (
void**)&pXAudio2);
1240 hr = pXAudio2->Initialize(Flags, XAudio2Processor);
1244 *ppXAudio2 = pXAudio2;
1248 pXAudio2->Release();
1254 HRESULT hr = CoCreateInstance((Flags & XAUDIO2_DEBUG_ENGINE) ? &CLSID_XAudio2_Debug : &CLSID_XAudio2,
1255 NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (
void**)&pXAudio2);
1258 hr = pXAudio2->lpVtbl->Initialize(pXAudio2, Flags, XAudio2Processor);
1262 *ppXAudio2 = pXAudio2;
1266 pXAudio2->lpVtbl->Release(pXAudio2);
1270 #endif // #ifdef __cplusplus 1275 #endif // #ifdef _XBOX 1281 #endif // #ifndef GUID_DEFS_ONLY 1282 #endif // #ifndef __XAUDIO2_INCLUDED__ Definition: XAudio2.h:293
Definition: XAudio2.h:384
Definition: XAudio2.h:269
Definition: XAudio2.h:277
Definition: XAudio2.h:338
Definition: XAudio2.h:255
Definition: XAudio2.h:304
Definition: XAudio2.h:327
Definition: XAudio2.h:262
Definition: XAudio2.h:247
Definition: XAudio2.h:238
Definition: audiodefs.h:74