10 #ifndef __XAUDIO2_INCLUDED__
11 #define __XAUDIO2_INCLUDED__
51 DEFINE_CLSID(XAudio2, 5a508685, a254, 4fba, 9
b, 82, 9
a, 24, b0, 03, 06, af);
52 DEFINE_CLSID(XAudio2_Debug, db05ea35, 0329, 4d4b, a5, 3
a, 6
d, ea, d0, 3
d, 38, 52);
53 DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8
a, c6, e2, ad, c4, 65, c8, bb);
57 #ifndef GUID_DEFS_ONLY
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
172 typedef enum XAUDIO2_XBOX_HWTHREAD_SPECIFIER
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
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),
483 STDMETHOD(RegisterForCallbacks) (__in IXAudio2EngineCallback* pCallback) PURE;
491 STDMETHOD_(
void, UnregisterForCallbacks) (__in IXAudio2EngineCallback* pCallback) PURE;
505 STDMETHOD(CreateSourceVoice) (THIS_ __deref_out IXAudio2SourceVoice** ppSourceVoice,
525 STDMETHOD(CreateSubmixVoice) (THIS_ __deref_out IXAudio2SubmixVoice** ppSubmixVoice,
526 UINT32 InputChannels, UINT32 InputSampleRate,
543 STDMETHOD(CreateMasteringVoice) (THIS_ __deref_out IXAudio2MasteringVoice** ppMasteringVoice,
552 STDMETHOD(StartEngine) (THIS) PURE;
557 STDMETHOD_(
void, StopEngine) (THIS) PURE;
566 STDMETHOD(CommitChanges) (THIS_ UINT32 OperationSet) PURE;
595 #define 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
819 #define INTERFACE IXAudio2SourceVoice
855 STDMETHOD(FlushSourceBuffers) (THIS) PURE;
862 STDMETHOD(Discontinuity) (THIS) PURE;
889 STDMETHOD(SetFrequencyRatio) (THIS_
float Ratio,
898 STDMETHOD_(
void, GetFrequencyRatio) (THIS_ __out
float* pRatio) PURE;
908 STDMETHOD(SetSourceSampleRate) (THIS_ UINT32 NewSourceSampleRate) PURE;
919 #define INTERFACE IXAudio2SubmixVoice
936 #define INTERFACE IXAudio2MasteringVoice
959 #define 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
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.0
f, Decibels / 20.0
f);
1160 __inline
float XAudio2AmplitudeRatioToDecibels(
float Volume)
1164 return -3.402823466e+38
f;
1166 return 20.0f * log10f(Volume);
1170 __inline
float XAudio2SemitonesToFrequencyRatio(
float Semitones)
1174 return powf(2.0
f, Semitones / 12.0
f);
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.0
f) >= SampleRate)
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
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__
enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER XAUDIO2_PROCESSOR
struct XAUDIO2_VOICE_DETAILS XAUDIO2_VOICE_DETAILS
UINT32 MemoryUsageInBytes
IXAudio2Voice * pOutputVoice
XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER
typedef HRESULT(WINAPI *LPD3DXIMTSIGNALCALLBACK)(CONST D3DXVECTOR2 *uv
UINT32 ActiveXmaSourceVoices
#define XAUDIO2_DEBUG_ENGINE
UINT32 MinimumCyclesPerQuantum
#define Declare_IXAudio2Voice_Methods()
struct XAUDIO2_BUFFER_WMA XAUDIO2_BUFFER_WMA
UINT32 MaximumCyclesPerQuantum
UINT32 CurrentLatencyInSamples
GLboolean GLboolean GLboolean GLboolean a
return Display return Display Bool Bool int d
struct XAUDIO2_EFFECT_DESCRIPTOR XAUDIO2_EFFECT_DESCRIPTOR
UINT32 ActiveSourceVoiceCount
DECLARE_INTERFACE_(IXAudio2, IUnknown)
struct XAUDIO2_FILTER_PARAMETERS XAUDIO2_FILTER_PARAMETERS
struct XAUDIO2_DEBUG_CONFIGURATION XAUDIO2_DEBUG_CONFIGURATION
struct XAUDIO2_SEND_DESCRIPTOR XAUDIO2_SEND_DESCRIPTOR
#define XAUDIO2_DEFAULT_CHANNELS
UINT64 TotalCyclesSinceLastQuery
XAUDIO2_SEND_DESCRIPTOR * pSends
#define XAUDIO2_MAX_FILTER_FREQUENCY
__inline HRESULT XAudio2Create(__deref_out IXAudio2 **ppXAudio2, UINT32 Flags X2DEFAULT(0), XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR))
struct XAUDIO2_EFFECT_CHAIN XAUDIO2_EFFECT_CHAIN
struct XAUDIO2_VOICE_SENDS XAUDIO2_VOICE_SENDS
struct XAUDIO2_DEVICE_DETAILS XAUDIO2_DEVICE_DETAILS
WAVEFORMATEXTENSIBLE OutputFormat
UINT32 ActiveSubmixVoiceCount
#define XAUDIO2_COMMIT_NOW
DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb)
UINT32 TotalSourceVoiceCount
struct XAUDIO2_PERFORMANCE_DATA XAUDIO2_PERFORMANCE_DATA
DECLARE_INTERFACE(IXAudio2Voice)
#define XAUDIO2_DEFAULT_SAMPLERATE
#define XAUDIO2_DEFAULT_FREQ_RATIO
struct XAUDIO2_VOICE_STATE XAUDIO2_VOICE_STATE
struct XAUDIO2_BUFFER XAUDIO2_BUFFER
const UINT32 * pDecodedPacketCumulativeBytes
UINT64 AudioCyclesSinceLastQuery
GLdouble GLdouble GLdouble b
void * pCurrentBufferContext
UINT32 GlitchesSinceEngineStarted
UINT32 ActiveResamplerCount
XAUDIO2_EFFECT_DESCRIPTOR * pEffectDescriptors
#define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
typedef BOOL(WINAPI *PFNWGLSETSTEREOEMITTERSTATE3DLPROC)(HDC hDC
UINT32 ActiveMatrixMixCount